;; Arrays
(defparameter *a* (make-array 3))
(aref *a* 2)
(setf foo '(a b c))
(second foo)
(setf (second foo) 'z)

;; Hash tables
(defparameter *h* (make-hash-table))

(setf (gethash 'yup *h*) 25)

(defun goo ()
  (values 3 7 10))

(multiple-value-bind (a b c) (goo)
  (* a b c))

(defstruct person
  name
  age
  waist-size
  favorite-color)

(defparameter *bob* (make-person :name "Bob"
                                 :age 35
                                 :waist-size 32
                                 :favorite-color "blue"))

(defparameter *that-guy* #S(person :name "Joe"
                                   :age 30
                                   :waist-size 31
                                   :favorite-color "red"))

(person-favorite-color *that-guy*)
(setf (person-age *that-guy*) 29)

(position #\i "mississippi")

(reduce #'+ '(1 2 3 4 5 6))

(reduce (lambda (best item)
          (if (and (> item best) (evenp item))
              item
              best))
        '(7 4 6 5 2)
        :initial-value 0)

(coerce '(#\a #\b #\c #\d) 'string)

(map 'list
     (lambda (x)
       (if (eq x #\s)
           #\S
           x))
     "this is a string")


(subseq "american" 2 6)

(sort '(60 8 2 4 5 6) #'<)
